Method and system for varying data packet size for controlling bandwidth

ABSTRACT

A method and system for controlling the bandwidth of a transmission of data content to a target bandwidth by varying the size of the data packets and providing a fixed wait, or pause, time between successive packets. The factors of predetermined target bandwidth and wait time are used to compute and transmit the data in a plurality of transmission cycles having a predetermined number of packets of both a minimum and maximum size with the fixed wait time between successive packets. The method and system also can be used with network protocols that have a fixed maximum protocol packet size that is less than the value of the minimum value packet size.

FIELD OF THE INVENTION

[0001] The invention relates to a method and system for controlling thesize of data packets transmitted from a sender device to one or morereceiving devices, for achieving bandwidth control.

BACKGROUND OF THE INVENTION

[0002] In performing data transmission using various media such ascable, telephone line, satellite communication, etc., it is conventionalfor the data to be sent from one device to one or more receivingdevices. The data is first fragmented, or segmented, into packets andthen the packets transmitted, or broadcast. The term “packet” is usedherein and conventionally to indicate a sequence of bytes of digitaldata and represents the smallest unit of transmission and reception.Hereafter, a “device” is defined as a hardware element, usually having asoftware component, capable of receiving and/or transmitting datapackets. Examples of such devices include computers, GPRS mobile phonesand network equipment.

[0003] The term “content”, as used herein, indicates data that issegmented into a sequence of packets. The data contained within thecontent could be a file, or part of a file, part of a data stream, orany collection of data. The content can comprise pure data, or audio andvideo data streams, or of any combination. The content is sent insequentially transmitted packets from a sender device to one or morereceiving devices.

[0004] The sending and receiving devices typically run software programsin conjunction with a computer, whose purpose at the sender device is tofragment the content to be sent into the packets, and at the receiverdevice to reassemble the packets received into the original content.

[0005] Bandwidth is conventionally defined and used herein to mean theamount of data that can be transmitted over the media in a given timeframe, for example, 10 Mbps (10 million bits per second). Essentially,this is the speed of the transmission, that is, the speed at which dataof the content is sent from the sending device to the receiving devices.Each transmitting-receiving system has a certain bandwidth capabilitythat is defined by various factors, such as the type of media used forthe transmission and the hardware and software equipment used fortransmission and reception of the data at the sending and receivingdevices. For example, a broadband cable medium has a larger bandwidthcapability than a telephone line.

[0006] Various types of protocols are used to transmit the data packetsforming the content. Some protocols may be considered to be“unreliable”, herein meaning any transmission protocol that providesbest-effort delivery of packets, and in particular, does not performautomatic re-transmission of lost or corrupted packets. Examples of“unreliable” protocols currently in common use include unicast andmulticast User Datagram Protocol (UDP), ATM Adaption Layer (AAL) Types3/4 and 5 in non-assured transmission mode, AppleTalk DDP datagrams, andunicast and broadcast MPEG-2 transport streams.

[0007] Often, data from different files, that is, different content, isto be transmitted at the same time over the same media. For example, ifa particular system has a 10 Mbps bandwidth transmission capability, thepackets of two different contents can be transmitted at the same time inseparate streams, for example, each stream of 5 Mbps bandwidth. Invarious commercial applications, portions of the available bandwidth ofa given media are sold, or leased to several different customers for useat the same time.

[0008] Some applications require that packets are to be received in aregular and timely fashion, for example, for audio and videotransmissions in which it is important that the jitter (i.e., the amountof variation in the end-to-end packet transit time) is kept as low aspossible. Increasing reliability at the receiving device implies use ofa high precision control of the bandwidth at the sending device,especially for broadband applications.

[0009] In general, the bandwidth usage of a broadcast application isselected according to network load and speed, leased bandwidth capacity,and processing speed of the receiving device. The bandwidth allocatedfor a given transmission is hereafter referred to as the “targetbandwidth” (B_(T)). During the transmission, the actual bandwidth usedcan vary relative to the selected target bandwidth.

[0010] As the broadcast takes place, the bandwidth varies and can bemeasured at any time. The “instantaneous bandwidth” is the bandwidthmeasured in the shortest measurable time. For example, if the bandwidthusage is regularly checked once per second, the instantaneous bandwidthis computed by dividing the quantity of data transferred in that timeframe (in this case 1 second) by that time interval.

[0011] The broadcast of the content has an “average (or mean) bandwidth”B_(M). This is the total amount of data transmitted during atransmission divided by the transmission duration. The terms “meanbandwidth” and “average bandwidth” are used interchangeably herein.

[0012] Since the content is transmitted in packets, there is a pause, orwait time (t_(w)), between the start of transmission of successivepackets. The wait time between packets is related to the bandwidth usedduring transmission of a content. For example, increasing the wait timebetween packets while maintaining a fixed packet size results in lessdata transmitted during a given time, and vice versa.

[0013] If data is sent without a precise control relative to the targetbandwidth, various problems can arise. Basically, there are threedifferent scenarios that can cause a problem:

[0014] (1) the average bandwidth B_(M) is too high relative to thetarget bandwidth B_(T) value;

[0015] (2) the average bandwidth B_(M) is too low relative to the targetbandwidth B_(T) value;

[0016] (3) the average bandwidth B_(M) is equal, or very close, to thetarget bandwidth B_(T), but the instantaneous bandwidth values measuredduring the transmission are different from the target bandwidth. Thistype of transmission is hereafter referred to as heterogeneous, i.e.,contains peaks.

[0017] The problems caused by the different scenarios described abovecan adversely affect different components and structures of the systemthat receive the data, such as routing and switching devices and thedestination receiver devices. This is described below.

[0018] (1) Sending data packets too fast. Broadcasting of the data at aspeed above the target bandwidth B_(T) usually results in substantialpacket losses. Loss of packets reduces the integrity of the datatransmission. Also, too high a transmission speed can cause congestionif routing devices are not able to buffer the incoming data stream. Thesame problem can affect encapsulators if data is sent to a satelliteuplink. Here, entire series of packets can be lost. At the receivingdevice side, packet reassembly can be difficult if the hardware orsoftware application program processing the received data is notdesigned for an incoming data stream speed higher than the bandwidthmean (average) value. Moreover, a local area network (LAN) to which thereceiving devices are connected can experience congestion if no trafficbuffering mechanism is provided between the data transmitter and thereceiving devices.

[0019] (2) Sending data packets too slow. If the packets are transmittedat a speed lower than the specified target bandwidth, no losses of datapackets should be experienced. However, a resource waste is caused,especially if the connection between the data transmitter and receivingdevices is purchased or leased on a bandwidth usage basis instead of ona transmitted data amount basis. Also, audio and video streaming qualitycan be affected if the receiving data rate is too low. That is, thereceived sound and video will be intermittent, garbled, or otherwisedistorted

[0020] (3) Peaks in bandwidth usage. Even when the average outputtransmission bandwidth is close to the target bandwidth does not alwaysguarantee that the data stream will be free of problems. For example,there can be bandwidth usage peaks at any instant during transmission.Also, if the packets are not homogeneously distributed during thetransmission, i.e., a fairly constant time between the successivepackets, packet clustering occurs that causes an increase or decrease ofthe bandwidth used at a given instant, this being the instantaneousbandwidth. As a result, the same problems described above fortransmissions with mean bandwidth higher or lower than the targetbandwidth can arise, although the adverse affects are experienced to alesser degree.

[0021] Another parameter that can be considered is the transmissionburstiness, which is defined as: ${Burstiness} = \frac{B_{peak}}{B_{M}}$

[0022] where B_(M) is the mean bandwidth of a transmission content, andB_(peak) is the highest of the absolute instantaneous bandwidth valuesmeasured during a transmission. That is:

[0023] B_(peak)=max(B_([t,t+Δt]))

[0024] B_([t,t+Δt]): instantaneous bandwidth B measured in the intervalincluded between t and t+Δt. Ideally, the burstiness should tend to one.That is, the bandwidth being used should be centered at B_(T). Ideally,B_(M)=B_(T). Note also that under the same conditions of burstiness, thetransmission homogeneity could be different, since no information isprovided in this value about the recurrence of B_(peak). In fact, theburstiness value says how large the peak is relative to the meantransmission bandwidth B_(M), but not how many times the peak isrepeated during a transmission. That is, a transmission can experience 1or 1000 peaks, but the value B_(peak) is the same in most or all cases.Also, no information is provided about the homogeneity of thetransmission.

[0025] Accordingly, it would be desirable to be able to better controlthe bandwidth usage for the transmission of packets containing any typeand different amounts of content. Prior attempts to solve the variousproblems discussed above typically enforce a maximum bandwidth. That is,the transmission protocol is such so as to intervene when a maximumvalue bandwidth is exceeded, but does not intervene when the bandwidthusage is lower than the maximum. Other existing solutions correctexisting traffic streams. That is, a protocol is used to solvecongestion problems caused by senders without inbuilt traffic control.Still other existing solutions discard packets when buffer space isexceeded. Some of the solutions of this type discard packets using analgorithm, such as the “leaky bucket” algorithm (Tanenbaum, ComputerNetworks, 3^(rd) Edition, p. 380, Prentice Hall). Other solutions permita certain amount of burstiness in the output stream using an algorithmsuch as the “token bucket” algorithm (Tanenbaum, p. 381).

[0026] Prior application Ser. No. 10/062,830, filed Jan. 31, 2002, whichis assigned to the same Assignee, the entirety of which is hereinincorporated by reference, provides a method and apparatus by which thebandwidth can be held more closely to a desired target bandwidth B_(T)value by properly selecting the pause (wait time t_(w)) between thesuccessive packets and the packets are transmitted using the selectedwait time during the transmission of the content. The method and systemof that application determines the wait time t_(w) between packets inaccordance with a novel algorithm developed and implemented that relatesthe desired size P of the packets of a content to be transmitted to thedesired target bandwidth B_(T). The parameters of desired targetbandwidth B_(T) and size of the packets P are provided or selected, andfrom these the wait time t_(w) is computed. By properly selecting andcontrolling the wait, or pause, time pause t_(w), between thetransmission of the successive packets the transmission of the contentat the desired target bandwidth is more closely controlled andmaintained at the selected value.

[0027] The invention of that application can be implemented in softwareand/or hardware. In a preferred embodiment of that invention, theprecision of the bandwidth control is maximized by the use of thehighest resolution clock or other timing device available at the sendingdevice. This provides the best compensation for wait time t_(w) roundingerrors, i.e., rounding the wait time value up or down to the nearestwhole number value achievable by the system timing devices.

BRIEF DESCRIPTIONS OF THE INVENTION

[0028] The present invention is directed to another method and systemfor controlling bandwidth to a target value B_(T) during transmission ofthe packets of a content. In the present invention, the size of thepackets transmitted during a “cycle” is varied. As used herein, the term“cycle” means a given number of packets having different sizes. A numberof cycles of packets is used during the transmission of a content.

[0029] In implementing the system and method of the invention thecontent to be sent is divided into packets. The packets are regularlysent with a fixed wait time interval t_(w) between successive packets.The packets are of two different sizes, a minimum P_(min) and a maximumP_(max), during the transmission and possibly one of a third sizebetween P_(min) and P_(max) for the last packet of the content. Thisresults in the average bandwidth usage value B_(M) being as near aspossible to the target bandwidth B_(T) for the given transmission. Also,the instantaneous bandwidth B_(I) should be as near as possible to thetarget bandwidth B_(T) (in order to keep the burstiness as low aspossible).

[0030] In considering the present invention as compared to the priorapplication, in the prior application the size of all packets was fixedto a value P (with the possible exception of the last packet). In thisinvention, the packets can have two different sizes: P_(min) or P_(max))(again, with an exception for the last packet).

[0031] The method and system of the present invention finds particularuse in applications using “unreliable” protocols, such as UDP, which donot use a comeback or returning traffic, as distinguished from so-called“reliable” protocols, such as TCP, which utilize such return traffic.

BRIEF DESCRIPTION OF THE DRAWINGS

[0032] Other objects and advantages of the present invention will becomemore apparent upon reference to the following specification and annexeddrawings, in which:

[0033] FIGS. 1A-1D are flow charts showing the computation of the packetsizes;

[0034]FIG. 2 is a diagram illustrating transmission during one cycle;and

[0035]FIG. 3 is a schematic diagram showing a typical transmission andreceiving system.

DETAILED DESCRIPTION OF THE INVENTION

[0036] In the method and system of the invention, the sending device iscomputer controlled and transmission of the content at the sendingdevice is controlled by a computer application program. The program isstructured to make the necessary calculations and control the size ofthe packets and distribution of packets of different sizes and thetransmission of such packets. This is described below. The computerprogram is written using any suitable conventional programming language.

[0037] In using the preferred embodiment of method and system, the inputparameters for the application program are:

[0038] target bandwidth B_(T)

[0039] fixed waiting interval between packets t_(w)

[0040] minimal data block size used in forming a packet that can behandled d_(min)

[0041] The target bandwidth B_(T) represents the bandwidth at which thecontent (including the protocol overhead) is to be sent. This parameteris typically specified on a per-transmission basis. As explained above,several transmissions with the same or different target bandwidth B_(T)can be taking place at the same time over the same medium. A properlyconstructed system can use one computer and one application program toaccomplish this, or there can be a separate computer and applicationprogram for each transmission.

[0042] The wait time interval t_(w) is the time interval that occursbetween successive packets of the transmission. The use of ahigh-resolution timer is not required in the preferred embodiment of theinvention, but it is important that the hardware and/or softwareimplementation of the sending device is capable of reliably waiting forthe desired interval with a relatively high degree of precision. Ingeneral, the wait time interval is chosen according to the hardware andsoftware (operating system, programming language) specifications.Usually, the limitations are on the software side. When programming,there typically exist functions that can be implemented to wait for adesired time. Specifications exist that describe the precisionlimitations of these functions, also according to the operating systemused. It should also be considered that the intercorrelations betweenfunctions implemented in software development kits and operating systemsare not always well predictable. The following is a procedure used inthe preferred embodiment of the invention in choosing the wait timeinterval:

[0043] choose a function according to the software application kitand/or programming language used for development. For example, there canbe a given function called “wait” where the input parameter is thewaiting time in a given time unit, e.g., wait (10) means wait 10milliseconds.

[0044] carefully select the function limitation in relation to theoperating system to be used. For example, if the time limitation for thewait( ) function on a given operating system is 1 millisecond, the inputparameter for the function cannot be smaller than 1 millisecond.

[0045] consider that usually the limit provided in the specifications isnot real. For example, if the program calls for wait(1), it can happenthat, in reality, the wait time will be more than 1 millisecond. Forthis reason, it is preferred that the effective precision of the timefunction be proven. This can be efficiently done by repeating many times(e.g., 1 million) the function with its limit and computing an averageinaccuracy. For example, the function waits 1.3 milliseconds instead ofthe specified 1.0 millisecond value.

[0046] once this real limit is found, it must be considered that ifconcurring software applications or processes run on the same machine,that delays can result. It is very important to be sure that a precisewait time can be ensured during the entire transmission. For thisreason, a “security factor” must be chosen in the development of thesending application. It also must be considered that by increasing thewait time, the wait time precision increases, but also the transmissionburstiness, defined above, will increase (if the other parameters arefixed). Here, the decision must be made considering both factors andalso other factors, e.g., the transmission protocol used, the maximumtransmission bandwidth to be reached, etc. In a typical application, thesecurity factor of 10 can be chosen. That is, the wait time intervalwill be 10 milliseconds (instead of 1 millisecond) as described in theprogramming specifications. This is valid for the example mentionedabove, but it is not a general rule. The choice of the values 1millisecond/10 milliseconds are strictly related to the example.

[0047] Since in the present invention the wait time interval betweensuccessive packets is fixed, this method and system are suitable for usewhere a high-resolution timer is not available.

[0048] In the invention, the minimal data block size d_(min) representsthe smallest contiguous collection of data that the application programcan transmit. As explained below, this value must be at least equal tothe protocol overhead of a packet plus 1 byte. By increasing the minimaldata block size d_(min), the percentage of “useful” data (content data)contained in a given cycle packet is increased, i.e., the proportion“content data vs. header information” increases. Nevertheless,increasing the minimal data block size will increase the differencebetween P_(max) and P_(min) and, consequently, the transmissionburstiness (if the other parameters are fixed).

[0049] In the system and method, the content of a transmission to besent is divided into packets. The packets are regularly sent with afixed interval t_(w) between successive packets. The packets are of twodifferent sizes, a minimum P_(min) and a maximum P_(max), during thetransmission and possibly one of a third size between P_(min) andP_(max) for the last packet of the content. This results in the averagebandwidth usage value B_(M) being as near as possible to the targetbandwidth B_(T) for the given transmission.

[0050] Moreover, the wait time t_(w) should be chosen according to theminimum data block size d_(min). If the difference between P_(min) andP_(max) is large, the wait time should be kept as small as possible (butaccording to the precision limit described above). Again, the differencebetween P_(min) and P_(max) is equal to d_(min).

[0051] The maximum and minimum of the instantaneous bandwidth, definedabove, used during the wait time t_(w) between successive packets can becalculated using the following formulae: $\begin{matrix}{B_{\max} = \frac{P_{\max}}{t_{w}}} \\{B_{\min} = \frac{P_{\min}}{t_{w}}}\end{matrix}$

[0052] where

[0053] B_(max)=maximum instantaneous bandwidth

[0054] B_(min)=minimum instantaneous bandwidth

[0055] P_(max)=maximum size packet

[0056] P_(min)=minimum size packet

[0057] FIGS. 1A-1C show the implementation of the invention. Inparticular, the drawings 1A-1D show the following processes:

[0058]FIG. 1A (steps S101-S130) depicts the computation of packetcomposition by computing the different packet sizes and the number ofpackets for each packet size during a cycle. During a cycle, the averagebandwidth B_(M) must be equal to the target bandwidth B_(T) (exceptioncan be the last cycle).

[0059] Referring to FIG. 1A, in S101 and S103 the target bandwidth B_(T)and wait time t_(w), are input to the computer application program. Theprocess steps are sequentially numbered.

[0060] 1. Using the values input from S101 and S103, in S105 atheoretical packet size P_(theoretical) is calculated where

P _(theoretical) =B _(T) *t _(w)  (Eq. 1)

[0061] The theoretical packet size P_(theoretical) is the theoreticalsize that every packet should have in order to ensure that the targetbandwidth B_(T) for a given content transmission is achieved whensending packets with a fixed wait time interval t_(w) between successivepackets. The packet size granularity (rounding packet size to a wholenumber) is not infinitesimally small, but is determined by the minimumdata block size d_(min) that makes up the packet. For example, if theminimum data block size that the application program can handle is 50Bytes, and the P_(theoretical) packet size value (resulting from (Eq. 1)is 976.45 Bytes, the possible packet sizes rounded down to thetheoretical value is 950 Bytes and 1000 Bytes. Here, 950 Bytes=P_(min)and 1000 Bytes=P_(max).

[0062] It is also possible to consider P_(theoretical) as the averagepacket size during the transmission in order to achieve the targetbandwidth B_(T) by sending the packets of the theoretical size with afixed t_(w) interval therebetween.

[0063] As explained above, a relationship exists between the variousinput parameters. In a typical example, the maximum target bandwidthB_(T) for the application is selected. For example, the software programwill reasonably send the data at a maximum of 50 Mbps. Then thetheoretical packet size P_(theoretical) is computed using the previouslyselected t_(w). Considering now the transmission protocol packet sizeand header information, a reasonable value for d_(min) is computed forcarrying the content data, but also trying not to increase theburstiness too much.

[0064] For example: if the target bandwidth B_(T) is 50 Mbps and thewait time t_(w) is chosen as 100 milliseconds (0.1 seconds), then thetheoretical packet size is 5 Megabits (=5000000 bits), that is, 625000Bytes. Consider a transmission protocol with a maximum packet size of350000 bytes and overhead of 35 bytes is used (theoretical transmissionprotocol, for example). Also, consider that it is desired to sendprotocol packets as large as possible. That is, the cycle packet sizewhen rounded will vary between 350000 and 700000 bytes. This can cause arelatively high burstiness, depending on the chosen wait time t_(w).Alternatively, the choice can be made to send protocol packets of 35000bytes (10 times less), with cycle packet sizes of 595000 and 630000bytes, respectively. Since the overhead size per protocol packet is verysmall (35 bytes), the content data is efficiently sent and theburstiness is dramatically decreased (considering the same wait timet_(w)).

[0065] 2. Because of the impossibility of creating packets with a sizegranularity smaller than d_(min), in S107 the minimal and maximal packetsizes are determined, and computed as follows: $\begin{matrix}{a = \frac{P_{theoretical}}{d_{\min}}} & \left( {{Eq}.\quad 2} \right)\end{matrix}$

[0066] 3. In S109, the computed value a is rounded to an integer bydefect (round down), to obtain an integer value b used for S110.

[0067] 4. In S111, the computed value a is rounded to an integer byexcess (round up) to obtain an integer value c used for S112

[0068] Note that b≦a and c≦a, therefore: b≦a≦c.

[0069] 5. In S115 a minimum packet size value P_(min) is computed as:

P _(min) =b·d _(min)  (Eq. 3)

[0070] 6. In S117 a maximum packet size value P_(max) is computed as:

P _(max) =c·d _(min)  (Eq. 4)

[0071] Note that P_(min)≦P_(theoretical)≦P_(max).

[0072] After having found the minimum P_(min) and maximum P_(max) packetsizes, it is necessary to find the right proportion of such packets tobe used during transmission of the content in order to achieve onaverage a transmission of the content at the target bandwidth B_(T).That is, on average (of the P_(min) and P_(max) packets) the packet sizemust be as near as possible to P_(theoretical).

[0073] The purpose of this also can be described as trying to distributethe packets in order to maximize homogeneity, i.e., decrease burstinessas much as possible.

[0074] To find the proportional number of packets having sizes P_(min)and P_(max), the following steps are followed:

[0075] 7. In S119 a value m is computed as:

m=P _(theoretical) −P _(min)  (Eq. 5)

[0076] 8. In S121, a value n is computed as:

n=P _(max) −P _(theoretical)  (Eq. 6)

[0077] where each of m and n is a whole number

[0078] 9. The values m and n determine the population of the differentsize packets. That is:

[0079] if m<n there will be a majority of packets with packet sizeP_(min);

[0080] if n<m there will be a majority of packets with packet sizeP_(max); and

[0081] If m=n there will be the same number of packets with packet sizeP_(min) as packets with packet size P_(max).

[0082] Note that if m and n are equal to zero, the size of all packetswill be equal to P_(theoretical).

[0083] 10. In S123 the value $\frac{n}{m}$

[0084] is reduced to the lowest common denominator, in order to obtainvalues p in S124 and q in S126 to restate the value $\frac{n}{m}$

[0085] in the form $\frac{q}{p}.$

[0086] That is (mathematically), there exists an integer x≧1 for which:$\frac{n}{m} = \frac{q \cdot x}{p \cdot x}$

[0087] 11. In S127, a value cycle_packets (the number of packetscontained in a cycle) is computed as:

cycle_packets=p+q  (Eq. 7)

[0088] That is, a cycle is composed in Step S130 of:

[0089] cycle_packets packets, with:

[0090] q packets with packet size P_(min), and

[0091] p packets with packet size P_(max).

[0092] Note that, if p and q are equal to zero (that is, the packet sizeis P_(theoretical) for all packets) no cycle will be performed, but thecontent will be divided into packets of constant size and sent with atime interval t_(w) between successive packets.

[0093] The transmission of content involves transmission of many cyclescomposed of a number of cycle_packet packets until the last packet ofthe content is sent. Note that the size of the last packet can besmaller than P_(max) and also smaller than P_(min), depending on howmany bytes must be sent in order to complete the content transmission.

[0094] It is preferred to achieve transmission homogeneity. That is, thepackets transmitted in a cycle are to be distributed in a smoothersequence than simply sending q packets with packet size P_(min) and ppackets with packet size P_(max). To do this, reference is made to FIG.1B.

[0095]FIG. 1B (steps S131-S183) depicts computation of the distributionof packets during a cycle. The purpose of this proportional distributionis that the instantaneous bandwidth must be as near as possible to thetarget bandwidth, i.e., to decrease as much as possible the burstiness.

[0096] Referring to FIG. 1B, the following steps are performed:

[0097] 12. Using the values p from S124 and q from S126, a value z iscomputed in one of S131, S133, S135 by testing q against p to produce zwhere: $\begin{matrix}\begin{matrix}{{{\ln \quad {S132}\quad z} = \frac{q}{p}},{{{if}\quad q} > p}} \\{{{\ln \quad {S134}\quad z} = \frac{p}{q}},{{{if}\quad p} > q}}\end{matrix} & \left( {{Eq},\quad 8} \right)\end{matrix}$

[0098] In S136 z=1, if p=q (also in the case p=q=0)

[0099] 13. In S139 the quantity z is rounded by defect (down) to thenearest integer value to produce the value prop in S140.

[0100] 14. Using the results of the tests of p against q of S131, S133and S135 in S160 a value r is computed which in a cycle composed ofcycle_packets packets, where r is the number of “isolated” packets asfollows:

r=q−(prop*p), if q>p

r=p−(prop*q), if p>q

r=0, if p=q  (Eq 9)

[0101] 15. In a cycle, the packets will be sent in the followingsequence, using the results of the p against q test of S131, S133 andS135, as set forth in a), b) and c) below:

[0102] a) If q>p:

[0103] then loop p times as controlled by S160, send prop P_(min)packets in S161, send 1 P_(max) packet in S163, and send r P_(max)packets in S165

[0104] b) If p>q:

[0105] then loop q times as controlled by S170, send prop P_(max)packets in S171, send 1 P_(min) packet in S173, and send r P_(min)packets S175

[0106] c) If p=q:

[0107] then loop the number of cycle_packets times as controlled byS180,

[0108] send 1 P_(max) packet in S181, and send 1 P_(min) packet S183.

[0109] In this way the process is complete: the transmission is composedof many cycles of cycle_packets number of packets.

[0110] In a cycle, the packet transmissions are distributed as describedin point 16 of Example 1 below.

[0111] It is typical for an application program sending data on anetwork to use network protocols in order to address the packets to thereceiver devices. Network protocols typically have a fixed maximumprotocol packet size. For example, for the ATM protocol this size (sizeof a cell) is 53 Bytes. This means that the herebefore called packetsare blocks of data which must be fragmented into protocol packetsdepending on the maximal protocol packet size. For example, if a packetof size 200 Bytes must be sent on an ATM protocol network, it will besplit into 3 protocol packets of 53 Bytes (max protocol packet size forATM) and one protocol packet of 41 Bytes. This does not impact theprocess described above relative to the determination of the number ofpackets of each of P_(max) and P_(min) to be transmitted during a cycle,since this fragmentation of a transmitted packet into its constituentsmaller size protocol packet does not impact the transmission of theprotocol packets in a way that these can be considered as a singlelarger packet.

[0112] On average during a content transmission, the packets size wouldbe P_(theoretical) and therefore the bandwidth used equal to B_(T).

[0113] An increase of the minimal data block size d_(min) handled by theapplication program and/or of the time interval between the successivepackets can cause an increase of the instantaneous bandwidth (dependingon the transmission sample rate). Also, an increase of the minimal datablock size handled can cause an increase of the difference of the valueP_(max)−P_(min), leading to an increase of the burstiness.

[0114] A refinement of the invention used in accommodating data protocolpacket size is described referring to FIGS. 1C and 1D.

[0115]FIG. 1C depicts the composition of packets according totransmission protocol packets. That is, the method and system of theinvention can be applied to any transmission protocol. Here, the purposeof the process is to compute how many protocol packets (e.g., UDPpackets) must be put together to create a cycle packet. As definedherein, each protocol packet is of a size ppsize. This computation isdone for both P_(max) and P_(min). This is important because, whenimplementing a software application, the transmission control isimplemented at transmission protocol level, i.e., the programmer cancontrol how many packets of a given protocol are sent. In this way, theprogrammer can say, for example, a cycle packet of size P_(max) iscomposed by a number of UDP packets. The number of the protocol packetsis computed as described below. It should be noted that for everyproperly working software application, d_(min) must be equal or smallerthan ppsize. Otherwise, the application is not able to handle datablocks of size ppsize. That is, the application is not able to transmitusing the chosen transmission protocol (with protocol packet sizeppsize).

[0116] In S200, the protocol packet size ppsize [Bytes] is used as aninput parameter. The protocol packet size ppsize represents the maximumprotocol packet size for those protocols, which can have a varyingprotocol packet size (e.g., UDP). Other transmission protocols havefixed protocol packet size (e.g., ATM). Knowing the values of P_(min)and P_(max) from S115 and S117, the packet composition at networkprotocol level can be computed as follows:

[0117] 1. Compute in S203 and S205 the values v1 and v2 as:$\begin{matrix}{{v1} = \frac{P_{\max}}{ppsize}} & \left( {{Eq}.\quad 10} \right) \\{{v2} = \frac{P_{\min}}{ppsize}} & \left( {{Eq}.\quad 11} \right)\end{matrix}$

[0118] 2. In S204, round v1 by defect [down] to the nearest integervalue, obtaining v3 in S205.

[0119] 3. In S206, round v2 by defect to the nearest integer value,obtaining v4 in S207.

[0120] 4. Compute in S211 maxrest as:

maxrest=(P _(max) −v3*ppsize)  (Eq. 12)

[0121] 5. Compute in S213 minrest as:

minrest=(P _(min) −v4*ppsize)  (Eq. 13)

[0122] 6. As shown in S215, a packet of size P_(max) will be split into:

[0123] v3 protocol packets of size ppsize, and

[0124] 1 protocol packet of size maxrest.

[0125] 7. As shown in S217, a packet of size P_(min) will be split into:

[0126] v4 protocol packets of size ppsize, and

[0127] 1 protocol packet of size minrest.

[0128] Typically, the address of the receiver devices to which thecontent is to be transmitted is contained in the same packet in whichthe content data is stored. The part of the packet which contains theaddress of the receiving devices and other information (not belonging tothe content to be sent) is hereafter called overhead.

[0129] A protocol packet sent on the network will therefore contain agiven overhead of a value “overhead size”, input in S220, and a givenamount of content data. The amount of content data sent in a packet ofsize P_(max) and P_(min), respectively, depends on the number ofprotocol packets resulting from the splitting process needed by thenetwork protocol, described above, and also on the overhead of everyprotocol packet.

[0130] As is described referring to FIG. 1D, this process computes thedata content of a given packet. In fact, common transmission protocolsuse a header, containing protocol data (e.g., the receiver address). Inthis header, no “useful” data of the content to be sent is contained.The issue is still that when implementing a software application, theprogrammer must be able to say how much content should be put in apacket. This allows knowing how much space of a packet is reserved for“useful” data and how much space is spent for header information.

[0131] Referring to FIG. 1D, in S220, given as an input parameter thesize of the overhead overhead_size [Bytes], the content data containedin the protocol packets are:

[0132] 8. for computing the information in the packet of size P_(max):

[0133] v3 protocol packets containing (ppsize−overhead_size) bytes ofcontent data, from S204, and

[0134] 1 protocol packet containing (maxrest−overhead_size) bytes ofcontent data.

[0135] That is, in a packet of size P_(max), the actual bytes of contentdata cdpmax are given in S230 by: $\begin{matrix}{{cdpmax} = \begin{matrix}{{{v3}*\left( {{ppsize} - {overhead\_ size}} \right)} +} \\\left( {{maxrest} - {overhead\_ size}} \right)\end{matrix}} & \left( {{Eq}.\quad 14} \right)\end{matrix}$

[0136] 9. for computing the information in the packet of size P_(min):

[0137] V4, from S206, protocol packets containing (ppsize−overhead size)bytes of content data, and

[0138] In S240, it is determined that 1 protocol packet containing(minrest−overhead_size) bytes of content data.

[0139] That is, in a packet of size P_(min), the actual bytes of contentdata cdpmin are given in S240 by: $\begin{matrix}{{cdpmin} = {{{v4}*\left( {{ppsize} - {overhead\_ size}} \right)} + \left( {{minrest} - {overhead\_ size}} \right)}} & \left( {{Eq}.\quad 15} \right)\end{matrix}$

EXAMPLE 1

[0140] Reference is made to the equations above and also to FIGS. 1A-1D.Reference is also made to FIG. 2 which illustrates the proportionaldistribution of the different packets during a cycle, in order todecrease burstiness (i.e., the instantaneous bandwidth must be as nearas possible to the target bandwidth). FIG. 2 further shows a pictorialrepresentation of some of the results of the Example. In the example:

[0141] (a) the application program is to send content with a targetbandwidth B_(T) of 15 Mbps.

[0142] (b) the machine on which the program is installed can reach ahigh precision time granularity of 100 milliseconds (=t_(w)).

[0143] (c) the application program will send UDP protocol packets on anetwork to one or many receiver devices (depending on what is specifiedby the user).

[0144] (d) the minimal data block d_(min) size that can be handled isfixed as 177 Bytes.

[0145] Solution:

[0146] UDP protocol packets header is 28 Bytes (20 bytes for IP and 8bytes for UDP). The maximum size of UDP protocol packets is 65535 Bytes.

[0147] The input parameters are summarized as:

[0148] B_(T)=15 Mbps=15000000 bps=1875000 Bytes per second (1 byte=8bits)

[0149] t_(w)=100 milliseconds=0.1 seconds

[0150] d_(min)=177 Bytes

[0151] ppsize=65535 Bytes

[0152] overhead_size=28 Bytes

[0153] Following the process described above:

[0154] 1. P_(theoretical)=1875000*0.1=187500 Bytes

[0155] 2. a=187500/177=1059.322

[0156] 3. b=1059

[0157] 4. c=1060

[0158] 5. P_(min)=1059*177=187443 Bytes

[0159] 6. P_(max)=1060*177=187620 Bytes

[0160] 7. m=187500−187443=57

[0161] 8. n=187620−187500=120

[0162] 9. m<n: there will be a majority of packets with packet sizeP_(min)

[0163] 10. n/m is already reduced to the lowest common integer multiple:

[0164] p=57, q=120

[0165] 11. cycle_packets=57+120=177

[0166] 12. A cycle will be composed of 177 packets, with 120 packets ofpacket size 187443 Bytes and 57 packets of packet size 187620 Bytes.

[0167] 13. q>p, therefore z=q/p=2.105263

[0168] 14. prop=2

[0169] 15. q>p, therefore r=6

[0170] 16. In a cycle, the packets will be sent in the followingsequence:

[0171] Repeat 57 times:

[0172] send 2 packets with packet size 187443 Bytes (P_(min))

[0173] send 1 packet with packet size 187620 Bytes (P_(max))

[0174] then send 6 packets with packet size 187620 Bytes. (P_(max))

[0175] Protocol Packets Composition:

[0176] 1. v1=2.8629, v2=2.8602

[0177] 2. v3=2

[0178] 3. v4=2

[0179] 4. maxrest=56550 Bytes

[0180] 5. minrest=56373 Bytes

[0181] 6. A packet of size 187620 Bytes will se split into:

[0182] 2 UDP packets of size 65535 Bytes, and

[0183] 1 UDP packet of size 56550 Bytes

[0184] 7. A packet of size 187443 Bytes will be split into:

[0185] 2 UDP packets of size 65535 Bytes, and

[0186] 1 UDP packet of size 56373 Bytes

[0187] 8. For the packet of size 187620 Bytes, the actual content dataare 187536 Bytes (≈99.95523% of the packet size).

[0188] 9. For the packet of size 187443 Bytes, the actual content dataare 187359 Bytes (≈99.95519% of the packet size).

[0189]FIG. 3 is a diagram that explains the transmission of the datapackets. At the sending station there is a computer 10 that has abroadcast application program installed. The broadcast applicationprogram operates on a content 12 that is to be transmitted in datapackets. The parameters of the transmission target bandwidth B_(T), p,and wait time t_(w) are input to the computer 10, as explained above.The computer computes the packet sizes as described with respect toFIGS. 1A-1D and operates to control the transmission 16 of packets 18(black bars), shown as having varying sizes.

[0190] The packets 18 are received at a computer 20 that has a receivingapplication program installed. This program reassembles the receivedpackets into a file that corresponds to the content file 12 that wassent. This is conventional.

[0191] Specific features of the invention are shown in one or more ofthe drawings for convenience only, as each feature may be combined withother features in accordance with the invention. Alternative embodimentswill be recognized by those skilled in the art and are intended to beincluded within the scope of the claims.

I claim:
 1. A method for controlling the bandwidth of transmission ofdata content in cycles of successive data packets comprising the stepsof: selecting a target bandwidth (B_(T)) for the content transmissionand the wait time (t_(w)) between packets; determining the number ofpackets of different sizes to be transmitted during a cycle with a fixedwait time (t_(w)) therebetween; and transmitting said packets ofdifferent size with said wait time (t_(w)) between successive packets.2. The method as claimed in claim 1 wherein the packets of differentsize are packets of each of a minimum size (P_(min)) and maximum size(P_(max)).
 3. The method as claimed in claim 2 wherein there is also atleast one packet of another size to complete the content of a cycle. 4.The method as claimed in claim 1 wherein the step of determining furthercomprises: calculating a theoretical packet size P_(theoretical) valueequal to the target bandwidth (B_(T)) times the wait time (t_(w)); andcalculating minimum (P_(min)) and maximum (P_(max)) of packet sizevalues based on said value of theoretical packet size (P_(theoretical)).5. The method as claimed in claim 4 wherein the minimum value packetsize (P_(min)) corresponds to the value of$\frac{P_{theoretical}}{d_{\min}}$

rounded down to the next integer value where d_(min) is the minimum datablock size that can be handled for transmission.
 6. The method asclaimed in claim 5 wherein the maximum value packet size (P_(max))corresponds to the value of $\frac{P_{theoretical}}{d_{\min}}$

rounded up to the next integer value.
 7. The method as claimed in claim6 further comprising the steps of: computing values ofm=P_(theoretical)−P_(min) and n=P_(max)−P_(theoretical); and determiningthe relationship of m to n as an indication of whether there are more orless packets of minimum size (P_(min)) as compared to packets of maximumsize (P_(max)).
 8. The method as claimed in claim 7 further comprisingthe steps of calculating the value of $\frac{n}{m} = \frac{q*x}{p*x}$

to determine that in a cycle there will be a number of q packets ofminimum size (P_(min)) and p packets of maximum size (P_(max)).
 9. Themethod as claimed in claim 8 further comprising the step of computingfrom the value p and q a value r corresponding to the number of datapackets to be transmitted to complete a cycle.
 10. The method as claimedin claim 9 further comprising the step of calculating from the values p,q and r the number of cycles needed to transmit the complete content ofthe data.
 11. The method as claimed in claim 2 further comprising thestep of: transmitting the data content in accordance with a dataprotocol in which a number of protocol packets of a given size (ppsize)compose each data packet of minimum size (P_(min)) and maximum size(P_(max)) and computing values of$V_{1} = {{\frac{P_{\max}}{ppsize}\quad {and}\quad V_{2}} = {\frac{P_{\min}}{ppsize}.}}$


12. The method as claimed in claim 11 further comprising the steps of:rounding down V₁ to a value V₃; rounding up V₃ to a value V₄; computingvalues of maxrest=(P_(max)−V₃*ppsize) and min rest=(P_(min)−V₄*ppsize);and splitting a data packet of size P_(max) into V₃ protocol packets ofsize ppsize and 1 protocol packet of size max rest; and splitting a datapacket of size P_(min) into V₄ protocol packets of size ppsize and 1protocol packet of size minrest.
 13. A system for controlling thebandwidth of transmission of data content in cycles of successive datapackets comprising: computer means including application program forreceiving parameters of a target bandwidth (B_(T)) for the contenttransmission and the wait time (t_(w)) between packets, and saidcomputer means operating to determine and control transmission of anumber of packets of different sizes during a cycle with a fixed waittime t_(w)) therebetween to achieve transmission at the target bandwidth(B_(T)).
 14. The system as claimed in claim 13 wherein said computermeans operates to determine and transmit packets of different size arepackets of each of a minimum size (P_(min)) and maximum size (P_(max)).15. The system as claimed in claim 14 wherein said computer meansoperates to determine and transmit at least one packet of another sizeto complete the content of a cycle.
 16. The system as claimed in claim13, wherein said computer means: calculates a theoretical packet size(P_(theoretical)) value equal to the target bandwidth (B_(T)) times thewait time (t_(w)); and calculates minimum (P_(min)) and maximum(P_(max)) of packet size values based on said value of theoreticalpacket size (P_(theoretical)).
 17. The system as claimed in claim 16wherein said computer operates to compute the minimum value packet size(P_(min)) as the value of $\frac{P_{theoretical}}{d_{\min}}$

rounded down to the next integer value.
 18. The system as claimed inclaim 17 wherein said computer operates to compute the maximum valuepacket size (P_(max)) as the value of $\frac{P_{theoretical}}{d_{\min}}$

rounded up to the next integer value.
 19. The system as claimed in claim18 wherein said computer computes the values ofm=P_(theoretical)−P_(min) and n=P_(max)−P_(theoretical); and determinesthe relationship of m to n as an indication of whether there are more orless packets of minimum size (P_(min)) as compared to packets of maximumsize (P_(max)).
 20. The system as claimed in claim 19 wherein saidcomuter further calculates the value of $\frac{n}{m} = \frac{q*x}{p*x}$

to determine that in a cycle there will be a number of q packets ofminimum size (P_(min)) and p packets of maximum size (P_(max)).
 21. Thesystem as claimed in claim 20 wherein said computer computes from thevalue p and q a value r corresponding to the number of data packets tobe transmitted to complete one cycle.
 22. The system as claimed in claim21 wherein said computer further computes from the values p, q and r thenumber of cycles needed to transmit the complete content of the data.23. The system as claimed in claim 14 wherein said computer furtheroperates to compute and transmit the data content in accordance with adata protocol in which a number of protocol packets of a given size(ppsize) compose each data packet of minimum size (P_(min)) and maximumsize (P_(max)) and computes values of$V_{1} = {{\frac{P_{\max}}{ppsize}\quad {and}\quad V_{2}} = {\frac{P_{\min}}{ppsize}.}}$


24. The system as claimed in claim 23 wherein said computer operates to:round down V₁ to a value V₃; round up V₃ to a value V₄; computes valuesof maxrest=(P_(max)−V₃*ppsize) and min rest=(P_(min)−V4*ppsize); andsplits a data packet of size P_(max) into V₃ protocol packets of sizeppsize and 1 protocol packet of size max rest; and splits a data packetof size P_(min) into V₄ protocol packets of size ppsize and 1 protocolpacket of size minrest.